Comparison of programming languages
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Programming languages are used for controlling the behavior of a machine (often a computer). Like natural languages, programming languages follow rules for syntax and semantics.
There are thousands of programming languagescite-ref-1[1] and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few people, but professional programmers may use dozens of languages in a career.
Most programming languages are not standardized by an international (or national) standard, even widely used ones, such as Perl or Standard ML (despite the name). Notable standardized programming languages include ALGOL, C, C++, JavaScript (under the name ECMAScript), Smalltalk, Prolog, Common Lisp, Scheme (IEEE standard), ISLISP, Ada, Fortran, COBOL, SQL, and XQuery.
Contents
β’ Type systems
β’ Expressiveness
β’ Benchmarks
β’ See also
β’ References
β’ Further reading
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
General comparison
The following table compares general and technical information for a selection of commonly used programming languages. See the individual languages' articles for further information.
| Language | Original purpose | Imperative |
|---|---|---|
| 1C:Enterprise programming language | Application , RAD , business, general ,β¦ | Yes |
| ActionScript | Application, client-side , web | Yes |
| Ada | Application, embedded , realtime , syst⦠| Yes |
| Aldor | Highly domain-specific , symbolic compu⦠| Yes |
| ALGOL 58 | Application | Yes |
| ALGOL 60 | Application | Yes |
| ALGOL 68 | Application | Yes |
| Ateji PX | Parallel application | No |
| APL | Application, data processing | Yes |
| Assembly language | General | Yes |
| AutoHotkey | GUI automation ( macros ), highly domai⦠| Yes |
| AutoIt | GUI automation (macros), highly domain-β¦ | Yes |
| Ballerina | Integration, agile, server-side , gener⦠| Yes |
| Bash | Shell , scripting | Yes |
| BASIC | Application, education | Yes |
| BeanShell | Application, scripting | Yes |
| BLISS | System | No |
| BlitzMax | Application, game | Yes |
| Boo | Application, game scripting | No |
| C | Application, system, general purpose, l⦠| Yes |
| C++ | Application, system | Yes |
| C# | Application, RAD, business, client-side⦠| Yes |
| Clarion | General, business, web | Yes |
| Clean | General | No |
| Clojure | General | No |
| CLU | General | Yes |
| COBOL | Application, business | Yes |
| Cobra | Application, business, general, web | Yes |
| ColdFusion (CFML) | Web | No |
| Common Lisp | General | Yes |
| COMAL 80 | Education | Yes |
| Crystal | General purpose | Yes |
| Curry | Application | No |
| Cython | Application, general, numerical computi⦠| Yes |
| D | Application, system | Yes |
| Dart | Application, web, server-side, mobile,β¦ | Yes |
| Delphi , Object Pascal | General purpose | Yes |
| Dylan | Application | No |
| Eiffel | General, application, business, client-β¦ | Yes |
| ELAN | Education | Yes |
| Elixir | Application, distributed | No |
| Erlang | Application, distributed | No |
| Euphoria | Application | No |
| Factor | General | Yes |
| FP | | No |
| F# | Application | Yes |
| Forth | General | Yes |
| Fortran | Application, numerical computing | Yes |
| FreeBASIC | Application, numerical computing | Yes |
| Gambas | Application | Yes |
| Game Maker Language | Application, game programming | Yes |
| GLBasic | Application, games | Yes |
| Go | Application, web, server-side | Yes |
| Gosu | Application, general, scripting, web | Yes |
| GraphTalk | Application | No |
| Groovy | Application, general, scripting, web | Yes |
| Harbour | Application, business, data processing,β¦ | Yes |
| Haskell | Application | No |
| Haxe | Application, general, web | Yes |
| HyperTalk | Application, RAD, general | Yes |
| Io | Application, host-driven scripting | Yes |
| IPL | General | No |
| ISLISP | General | Yes |
| J | Application, data processing | Yes |
| JADE | Application, distributed | Yes |
| Java | Application, business, client-side, gen⦠| Yes |
| JavaScript | Client-side, server-side, web | Yes |
| Joy | Research | No |
| jq | "awk for JSON" | No |
| Julia | General, technical computing | Yes |
| K | Data processing, business | No |
| Kotlin | Application, mobile development, server⦠| Yes |
| Ksh | Shell , scripting | Yes |
| LabVIEW (G) | Application, industrial instrumentation⦠| Yes |
| Lisp | General | No |
| LiveCode | Application, RAD, general | Yes |
| Logtalk | Artificial intelligence, application | No |
| Linden Scripting Language (LSL) | Virtual worlds content scripting and an⦠| Yes |
| Lua | Application, embedded scripting | Yes |
| Maple | Symbolic computation, numerical computi⦠| Yes |
| Mathematica | Symbolic language | Yes |
| MATLAB | Highly domain-specific, numerical compu⦠| Yes |
| Modula-2 | Application, system | Yes |
| Modula-3 | Application | Yes |
| MUMPS (M) | General, application, databases | Yes |
| Nim | Application, general, web, scripting, s⦠| Yes |
| Oberon | Application, system | Yes |
| Object Pascal | Application, general, mobile app, web | Yes |
| Objective-C | Application, general | Yes |
| OCaml | Application, general | Yes |
| Occam | General | Yes |
| Opa | Web applications | Yes |
| OpenLisp | General, Embedded Lisp Engine | Yes |
| Oxygene | Application | Yes |
| Oz-Mozart | Application, distribution, education | Yes |
| Pascal | Application, education | Yes |
| Perl | Application, scripting, text processing⦠| Yes |
| PHP | Server-side, web application, web | Yes |
| PL/I | Application | Yes |
| Plus | Application, system development | Yes |
| PostScript | Graphics, page description | Yes |
| PowerShell | Administration, application, general, s⦠| Yes |
| Prolog | Application, artificial intelligence | No |
| PureBasic | Application | Yes |
| Python | Application, general, web, scripting, a⦠| Yes |
| R | Application, statistics | Yes |
| Racket | Education, general, scripting | Yes |
| Raku | Scripting, text processing, glue | Yes |
| REALbasic | Application | No |
| Rebol | Distributed | Yes |
| REXX | Scripting | Yes |
| RPG | Application, system | Yes |
| Ring | Application | Yes |
| Ruby | Application, scripting, web | Yes |
| Rust | Application, server-side, system, web | Yes |
| S | Application, statistics | Yes |
| S-Lang | Application, numerical, scripting | Yes |
| Scala | Application, general, parallel, distrib⦠| Yes |
| Scheme | Education, general | Yes |
| Seed7 | Application, general, scripting, web | Yes |
| Simula | Education, general | Yes |
| Small Basic | Application, education, games | Yes |
| Smalltalk | Application, general, business, artific⦠| Yes |
| SNOBOL | Text processing | No |
| Standard ML | Application | Yes |
| Swift | Application, general | Yes |
| Tcl | Application, scripting, web | Yes |
| V (Vlang) | Application, general, system, game, web⦠| Yes |
| Visual Basic | Application, RAD, education, business,β¦ | Yes |
| Visual Basic .NET | Application, RAD, education, web, busin⦠| Yes |
| Visual FoxPro | Application | Yes |
| Visual Prolog | Application | Yes |
| Wolfram Language | Symbolic language | Yes |
| XL | | Yes |
| Xojo | Application, RAD, general, web | Yes |
| XPath / XQuery | Databases, data processing, scripting | No |
| Zeek | Domain-specific, application | Yes |
| Zig | Application, general, system | Yes |
| Zsh | Shell , scripting | Yes |
| Language | Object-oriented | Functional |
|---|---|---|
| 1C:Enterprise programming language | No | Yes |
| ActionScript | Yes | Yes |
| Ada | Yes | No |
| Aldor | Yes | Yes |
| ALGOL 58 | No | No |
| ALGOL 60 | No | No |
| ALGOL 68 | No | Yes |
| Ateji PX | Yes | No |
| APL | Yes | Yes |
| Assembly language | No | No |
| AutoHotkey | Yes | No |
| AutoIt | No | No |
| Ballerina | Yes | Yes |
| Bash | No | No |
| BASIC | No | No |
| BeanShell | Yes | Yes |
| BLISS | No | No |
| BlitzMax | Yes | No |
| Boo | Yes | No |
| C | No | No |
| C++ | Yes | Yes |
| C# | Yes | Yes |
| Clarion | Yes | Yes |
| Clean | No | Yes |
| Clojure | No | Yes |
| CLU | Yes | No |
| COBOL | Yes | No |
| Cobra | Yes | Yes |
| ColdFusion (CFML) | Yes | No |
| Common Lisp | Yes | Yes |
| COMAL 80 | No | No |
| Crystal | Yes | Yes |
| Curry | No | Yes |
| Cython | Yes | Yes |
| D | Yes | Yes |
| Dart | Yes | Yes |
| Delphi , Object Pascal | Yes | Yes |
| Dylan | Yes | Yes |
| Eiffel | Yes | Yes |
| ELAN | No | No |
| Elixir | No | Yes |
| Erlang | No | Yes |
| Euphoria | No | No |
| Factor | No | Can be viewed as |
| FP | No | Yes |
| F# | Yes | Yes |
| Forth | No | No |
| Fortran | Yes | Yes |
| FreeBASIC | Yes | No |
| Gambas | Yes | No |
| Game Maker Language | Yes | No |
| GLBasic | Yes | No |
| Go | Can be viewed as | Can be viewed as |
| Gosu | Yes | No |
| GraphTalk | Yes | No |
| Groovy | Yes | Yes |
| Harbour | Yes | Yes |
| Haskell | No | Yes |
| Haxe | Yes | Yes |
| HyperTalk | No | No |
| Io | Yes | No |
| IPL | No | Yes |
| ISLISP | Yes | Yes |
| J | Yes | Yes |
| JADE | Yes | No |
| Java | Yes | Yes |
| JavaScript | Yes | Yes |
| Joy | No | Yes |
| jq | No | Yes |
| Julia | Can be viewed as | Yes |
| K | No | No |
| Kotlin | Yes | Yes |
| Ksh | Yes | No |
| LabVIEW (G) | Yes | Yes |
| Lisp | No | Yes |
| LiveCode | Yes | No |
| Logtalk | Yes | No |
| Linden Scripting Language (LSL) | No | No |
| Lua | Yes | Yes |
| Maple | Yes | Yes |
| Mathematica | Yes | Yes |
| MATLAB | Yes | No |
| Modula-2 | No | No |
| Modula-3 | Yes | No |
| MUMPS (M) | Approved for next Standard | No |
| Nim | Yes | Yes |
| Oberon | Yes | No |
| Object Pascal | Yes | No |
| Objective-C | Yes | No |
| OCaml | Yes | Yes |
| Occam | No | No |
| Opa | No | Yes |
| OpenLisp | Yes | Yes |
| Oxygene | Yes | No |
| Oz-Mozart | Yes | Yes |
| Pascal | No | No |
| Perl | Yes | Yes |
| PHP | Yes | Yes |
| PL/I | Yes | No |
| Plus | No | No |
| PostScript | No | No |
| PowerShell | Yes | Yes |
| Prolog | No | Yes |
| PureBasic | No | No |
| Python | Yes | Yes |
| R | Yes | Yes |
| Racket | Yes | Yes |
| Raku | Yes | Yes |
| REALbasic | No | No |
| Rebol | Yes | Yes |
| REXX | Yes ( NetRexx and Object REXX dialects) | No |
| RPG | No | No |
| Ring | Yes | Yes |
| Ruby | Yes | Yes |
| Rust | Can be viewed as | Yes |
| S | Yes | Yes |
| S-Lang | No | No |
| Scala | Yes | Yes |
| Scheme | No | Yes |
| Seed7 | Yes | No |
| Simula | Yes | No |
| Small Basic | No | No |
| Smalltalk | Yes | Yes |
| SNOBOL | No | No |
| Standard ML | No | Yes |
| Swift | Yes | Yes |
| Tcl | Yes | Yes |
| V (Vlang) | Can be viewed as | Can be viewed as |
| Visual Basic | Yes | No |
| Visual Basic .NET | Yes | Yes |
| Visual FoxPro | Yes | No |
| Visual Prolog | Yes | Yes |
| Wolfram Language | No | Yes |
| XL | Yes | No |
| Xojo | Yes | No |
| XPath / XQuery | No | Yes |
| Zeek | No | No |
| Zig | No | Yes |
| Zsh | No | No |
| Language | Procedural | Generic |
|---|---|---|
| 1C:Enterprise programming language | Yes | Yes |
| ActionScript | Yes | No |
| Ada | Yes | Yes |
| Aldor | No | No |
| ALGOL 58 | No | No |
| ALGOL 60 | Yes | Yes |
| ALGOL 68 | Yes | Yes |
| Ateji PX | No | No |
| APL | Yes | Yes |
| Assembly language | No | No |
| AutoHotkey | Yes | No |
| AutoIt | Yes | No |
| Ballerina | Yes | No |
| Bash | Yes | No |
| BASIC | Yes | No |
| BeanShell | No | No |
| BLISS | Yes | No |
| BlitzMax | Yes | No |
| Boo | No | No |
| C | Yes | No |
| C++ | Yes | Yes |
| C# | Yes | Yes |
| Clarion | No | No |
| Clean | No | Yes |
| Clojure | No | No |
| CLU | Yes | Yes |
| COBOL | Yes | No |
| Cobra | No | Yes |
| ColdFusion (CFML) | Yes | No |
| Common Lisp | Yes | Yes |
| COMAL 80 | Yes | No |
| Crystal | Yes | Yes |
| Curry | No | Yes |
| Cython | No | No |
| D | Yes | Yes |
| Dart | Yes | Yes |
| Delphi , Object Pascal | Yes | Yes |
| Dylan | No | No |
| Eiffel | No | Yes |
| ELAN | Yes | No |
| Elixir | No | No |
| Erlang | No | No |
| Euphoria | Yes | No |
| Factor | No | Yes |
| FP | No | No |
| F# | Yes | Yes |
| Forth | Yes | No |
| Fortran | Yes | Yes |
| FreeBASIC | Yes | Yes |
| Gambas | No | No |
| Game Maker Language | No | No |
| GLBasic | Yes | No |
| Go | Yes | Yes |
| Gosu | No | Yes |
| GraphTalk | No | No |
| Groovy | Yes | Yes |
| Harbour | Yes | Yes |
| Haskell | No | Yes |
| Haxe | No | Yes |
| HyperTalk | Yes | No |
| Io | No | No |
| IPL | No | No |
| ISLISP | No | Yes |
| J | Yes | Yes |
| JADE | No | No |
| Java | Yes | Yes |
| JavaScript | Yes | No |
| Joy | No | No |
| jq | No | No |
| Julia | Yes | Yes |
| K | No | No |
| Kotlin | Yes | Yes |
| Ksh | Yes | No |
| LabVIEW (G) | No | No |
| Lisp | No | No |
| LiveCode | Yes | No |
| Logtalk | No | No |
| Linden Scripting Language (LSL) | Yes | No |
| Lua | Yes | No |
| Maple | Yes | No |
| Mathematica | Yes | Yes |
| MATLAB | Yes | No |
| Modula-2 | No | Yes |
| Modula-3 | No | Yes |
| MUMPS (M) | Yes | Partially Thru Indirection and Xecute |
| Nim | Yes | Yes |
| Oberon | No | No |
| Object Pascal | Yes | Yes |
| Objective-C | Yes | No |
| OCaml | Yes | Yes |
| Occam | Yes | No |
| Opa | No | Yes |
| OpenLisp | No | Yes |
| Oxygene | No | Yes |
| Oz-Mozart | No | No |
| Pascal | Yes | No |
| Perl | Yes | Yes |
| PHP | Yes | No |
| PL/I | Yes | No |
| Plus | Yes | No |
| PostScript | Yes | No |
| PowerShell | Yes | No |
| Prolog | Yes | No |
| PureBasic | Yes | No |
| Python | Yes | Yes |
| R | Yes | No |
| Racket | Yes | No |
| Raku | Yes | Yes |
| REALbasic | Yes | No |
| Rebol | Yes | No |
| REXX | Yes | No |
| RPG | Yes | No |
| Ring | Yes | Yes |
| Ruby | No | No |
| Rust | Yes | Yes |
| S | Yes | No |
| S-Lang | Yes | No |
| Scala | No | Yes |
| Scheme | No | No |
| Seed7 | No | Yes |
| Simula | No | No |
| Small Basic | No | No |
| Smalltalk | Yes | No |
| SNOBOL | No | No |
| Standard ML | No | Yes |
| Swift | Yes | Yes |
| Tcl | Yes | No |
| V (Vlang) | Yes | Yes |
| Visual Basic | Yes | Yes |
| Visual Basic .NET | Yes | Yes |
| Visual FoxPro | Yes | No |
| Visual Prolog | No | No |
| Wolfram Language | Yes | Yes |
| XL | No | No |
| Xojo | Yes | No |
| XPath / XQuery | No | No |
| Zeek | No | No |
| Zig | Yes | Yes |
| Zsh | Yes | No |
| Language | Reflective | Other paradigms |
|---|---|---|
| 1C:Enterprise programming language | Yes | Object-based , Prototype-based programm⦠|
| ActionScript | No | prototype-based |
| Ada | No | Concurrent , distributed |
| Aldor | No | |
| ALGOL 58 | No | |
| ALGOL 60 | No | |
| ALGOL 68 | No | Concurrent |
| Ateji PX | No | pi calculus |
| APL | Yes | Array-oriented , tacit |
| Assembly language | No | Any, syntax is usually highly specific,β¦ |
| AutoHotkey | No | |
| AutoIt | No | |
| Ballerina | No | Concurrent, transactional, statically a⦠|
| Bash | No | |
| BASIC | No | |
| BeanShell | Yes | |
| BLISS | No | |
| BlitzMax | Yes | |
| Boo | No | |
| C | No | |
| C++ | Yes | Concurrent |
| C# | Yes | Concurrent, structured |
| Clarion | No | |
| Clean | No | |
| Clojure | No | Concurrent |
| CLU | No | |
| COBOL | No | |
| Cobra | Yes | |
| ColdFusion (CFML) | No | |
| Common Lisp | Yes | Extensible syntax, Array-oriented , syn⦠|
| COMAL 80 | No | |
| Crystal | No | Concurrent |
| Curry | No | lazy evaluation , non-determinism |
| Cython | Yes | Aspect-oriented |
| D | Yes | Generative, concurrent |
| Dart | No | Structured |
| Delphi , Object Pascal | Yes | |
| Dylan | No | |
| Eiffel | Yes Erl-G | Distributed SCOOP , Void-safe |
| ELAN | No | Structured , stepwise refinement |
| Elixir | Yes | Concurrent, distributed |
| Erlang | Yes | Concurrent, distributed |
| Euphoria | Yes | |
| Factor | Yes | Stack-oriented |
| FP | No | |
| F# | Yes | |
| Forth | Yes | Stack-oriented |
| Fortran | No | Array-based, vectorized, concurrent, na⦠|
| FreeBASIC | No | |
| Gambas | No | |
| Game Maker Language | No | |
| GLBasic | No | Simple object-oriented |
| Go | Yes | Concurrent |
| Gosu | Yes | |
| GraphTalk | No | Logic |
| Groovy | Yes | Meta-programming |
| Harbour | Yes | Declarative |
| Haskell | No | Lazy evaluation |
| Haxe | Yes | |
| HyperTalk | Yes | Weakly typed |
| Io | No | |
| IPL | No | |
| ISLISP | No | |
| J | Yes | Array-oriented, function-level , tacit,β¦ |
| JADE | No | |
| Java | Yes | Concurrent |
| JavaScript | Yes | prototype-based |
| Joy | No | Stack-oriented |
| jq | No | Tacit , Backtracking , Streaming , PEG |
| Julia | Yes | Multiple dispatch, meta, scalar and arr⦠|
| K | No | Array-oriented, tacit |
| Kotlin | Yes | |
| Ksh | No | Several variants, custom programmable,β¦ |
| LabVIEW (G) | No | Dataflow , visual |
| Lisp | No | |
| LiveCode | Yes | Weakly typed |
| Logtalk | Yes | Logic |
| Linden Scripting Language (LSL) | No | Scripts exist in in-world objects |
| Lua | Yes | Aspect-oriented, prototype-based |
| Maple | No | Distributed |
| Mathematica | Yes | Logic, distributed |
| MATLAB | No | |
| Modula-2 | No | |
| Modula-3 | No | |
| MUMPS (M) | Yes | Concurrent , multi-user , NoSQL , trans⦠|
| Nim | Yes | Multiple dispatch, concurrent, meta |
| Oberon | No | |
| Object Pascal | Yes | Structured |
| Objective-C | Yes | Concurrent |
| OCaml | No | |
| Occam | No | Concurrent, process-oriented |
| Opa | No | Distributed |
| OpenLisp | No | |
| Oxygene | No | |
| Oz-Mozart | No | Concurrent, logic |
| Pascal | No | |
| Perl | Yes | |
| PHP | Yes | |
| PL/I | No | |
| Plus | No | |
| PostScript | No | Concatenative , stack-oriented |
| PowerShell | Yes | Pipeline |
| Prolog | Yes | Logic, declarative |
| PureBasic | No | |
| Python | Yes | Aspect-oriented |
| R | Yes | |
| Racket | Yes | Modular , logic, meta |
| Raku | Yes | Aspect-oriented, array, lazy evaluation⦠|
| REALbasic | No | |
| Rebol | Yes | Dialected |
| REXX | No | |
| RPG | No | |
| Ring | Yes | metaprogramming, declarative, natural-l⦠|
| Ruby | Yes | Aspect-oriented |
| Rust | No | Concurrent |
| S | No | |
| S-Lang | No | |
| Scala | Yes | Data-oriented programming, metaprogramm⦠|
| Scheme | No | meta, extensible-syntax |
| Seed7 | Yes | Multi-paradigm, extensible, structured |
| Simula | No | discrete event simulation , multi-threa⦠|
| Small Basic | No | Component-oriented |
| Smalltalk | Yes | Concurrent, declarative |
| SNOBOL | No | |
| Standard ML | No | |
| Swift | Yes | Concurrent, declarative, protocol-orien⦠|
| Tcl | Yes | |
| V (Vlang) | Yes | Concurrent |
| Visual Basic | No | Component-oriented |
| Visual Basic .NET | Yes | Structured, concurrent |
| Visual FoxPro | No | Data-centric, logic |
| Visual Prolog | No | Declarative, logic |
| Wolfram Language | Yes | Logic, distributed |
| XL | No | concept programming |
| Xojo | Yes | |
| XPath / XQuery | No | Tree-oriented |
| Zeek | No | |
| Zig | Yes | Concurrent |
| Zsh | No | Loadable modules |
| Language | Standardized |
|---|---|
| 1C:Enterprise programming language | No |
| ActionScript | Yes 1999-2003, ActionScript 1.0 with ES⦠|
| Ada | Yes 1983, 2005, 2012, ANSI, ISO, GOST 2β¦ |
| Aldor | No |
| ALGOL 58 | No |
| ALGOL 60 | Yes 1960, IFIP WG 2.1 , ISO |
| ALGOL 68 | Yes 1968, IFIP WG 2.1 , GOST 27974-88 , |
| Ateji PX | No |
| APL | Yes 1989, ISO |
| Assembly language | Yes 1985 IEEE 694-1985 |
| AutoHotkey | No |
| AutoIt | No |
| Ballerina | De facto standard via Ballerina Languag⦠|
| Bash | Optionally POSIX.2 |
| BASIC | Yes 1983, ANSI, ISO, ECMA |
| BeanShell | No In progress, JCP |
| BLISS | No |
| BlitzMax | No |
| Boo | No |
| C | Yes 1989, ANSI C89, ISO/IEC C90, ISO/IE⦠|
| C++ | Yes 1998, ISO/IEC C++98, ISO/IEC C++03,β¦ |
| C# | Yes 2000, ECMA, ISO |
| Clarion | UnΒknown |
| Clean | No |
| Clojure | No |
| CLU | No |
| COBOL | Yes 1968 ANSI X3.23, 1974, 1985; ISO/IE⦠|
| Cobra | No |
| ColdFusion (CFML) | No |
| Common Lisp | Yes 1994, ANSI |
| COMAL 80 | No |
| Crystal | No |
| Curry | De facto standard via Curry Language Re⦠|
| Cython | No |
| D | No |
| Dart | Yes ECMA-408 standard |
| Delphi , Object Pascal | UnΒknown |
| Dylan | No |
| Eiffel | Yes 2005, ECMA, ISO |
| ELAN | No |
| Elixir | No |
| Erlang | No |
| Euphoria | No |
| Factor | No |
| FP | No |
| F# | No |
| Forth | Yes 1994, ANSI |
| Fortran | Yes 1966, ANSI 66, ANSI 77, MIL-STD-175β¦ |
| FreeBASIC | No |
| Gambas | No |
| Game Maker Language | No |
| GLBasic | No |
| Go | De facto standard via Go Language Speci⦠|
| Gosu | No |
| GraphTalk | No |
| Groovy | No In progress, JCP |
| Harbour | No |
| Haskell | Yes 2010, Haskell 2010 |
| Haxe | No |
| HyperTalk | UnΒknown |
| Io | No |
| IPL | UnΒknown |
| ISLISP | Yes 1997, 2007, ISO |
| J | No |
| JADE | No |
| Java | De facto standard via Java Language Spe⦠|
| JavaScript | Yes ECMA-262 standard |
| Joy | No |
| jq | No |
| Julia | De facto standard via Julia Documentati⦠|
| K | UnΒknown |
| Kotlin | De facto standard via Kotlin Language S⦠|
| Ksh | Optionally POSIX.2 |
| LabVIEW (G) | No |
| Lisp | UnΒknown |
| LiveCode | No |
| Logtalk | No |
| Linden Scripting Language (LSL) | De facto reference is the Second Life i⦠|
| Lua | No |
| Maple | No |
| Mathematica | No |
| MATLAB | No |
| Modula-2 | Yes 1996, ISO |
| Modula-3 | No |
| MUMPS (M) | Yes 1977 ANSI, 1995, ISO 2020 |
| Nim | No |
| Oberon | No |
| Object Pascal | No |
| Objective-C | No |
| OCaml | No |
| Occam | No |
| Opa | No |
| OpenLisp | Optionally ISLISP |
| Oxygene | No |
| Oz-Mozart | No |
| Pascal | Yes 1983, ISO |
| Perl | No |
| PHP | De facto standard via language specific⦠|
| PL/I | Yes 1969, ECMA-50 (1976) |
| Plus | No |
| PostScript | De facto standard via the PostScript Re⦠|
| PowerShell | No |
| Prolog | Yes 1995, ISO/IEC 13211-1:1995, TC1 200β¦ |
| PureBasic | No |
| Python | De facto standard via Python Enhancemen⦠|
| R | No |
| Racket | No |
| Raku | No |
| REALbasic | UnΒknown |
| Rebol | No |
| REXX | Yes 1996 (ANSI X3.274-1996) |
| RPG | No |
| Ring | No |
| Ruby | Yes 2011(JIS X 3017), 2012(ISO/IEC 3017β¦ |
| Rust | De facto standard by the official Rust⦠|
| S | No |
| S-Lang | No |
| Scala | De facto standard via Scala Language Sp⦠|
| Scheme | De facto 1975-2013, R 0 RS, R 1 RS, R 2β¦ |
| Seed7 | No |
| Simula | Yes 1968 |
| Small Basic | No |
| Smalltalk | Yes 1998, ANSI |
| SNOBOL | UnΒknown |
| Standard ML | Yes 1997, SML '97 |
| Swift | No |
| Tcl | No |
| V (Vlang) | No |
| Visual Basic | No |
| Visual Basic .NET | No |
| Visual FoxPro | No |
| Visual Prolog | No |
| Wolfram Language | No |
| XL | No |
| Xojo | No |
| XPath / XQuery | Yes 1999 W3C XPath 1, 2010 W3C XQuery 1β¦ |
| Zeek | No |
| Zig | No |
| Zsh | Optionally POSIX.2 |
Type systems
Failsafe I/O and system calls
Most programming languages will print an error message or throw an exception if an input/output operation or other system call (e.g., chmod, kill) fails, unless the programmer has explicitly arranged for different handling of these events. Thus, these languages fail safely in this regard.
Some (mostly older) languages require that programmers explicitly add checks for these kinds of errors. Psychologically, different cognitive biases (e.g., optimism bias) may affect novices and experts alike and lead them to skip these checks. This can lead to erroneous behavior.
Failsafe I/O is a feature of 1C:Enterprise, Ada (exceptions), ALGOL (exceptions or return value depending on function), Ballerina, C#, Common Lisp ("conditions and restarts" system), Curry, D (throwing on failure),cite-ref-48[48] Erlang, Fortran, Go (unless result explicitly ignored), Gosu, Harbour, Haskell, ISLISP, Java, Julia, Kotlin, LabVIEW, Mathematica, Objective-C (exceptions), OCaml (exceptions), OpenLisp, PHP, Python, Raku, Rebol, Rexx (with optional signal on... trap handling), Ring, Ruby, Rust (unless result explicitly ignored), Scala,cite-ref-49[49] Smalltalk, Standard ML , Swift β₯ 2.0 (exceptions), Tcl, Visual Basic, Visual Basic .NET, Visual Prolog, Wolfram Language, Xojo, XPath/XQuery (exceptions), and Zeek.
No Failsafe I/O: AutoHotkey (global ErrorLevel must be explicitly checked), C,cite-ref-vs-50-0[50] COBOL, Eiffel (it actually depends on the library and it is not defined by the language), GLBasic (will generally cause program to crash), RPG, Lua (some functions do not warn or throw exceptions), and Perl.cite-ref-51[51]
Some I/O checking is built in C++ (STL iostreams throw on failure but C APIs like stdio or POSIX do not)cite-ref-vs-50-1[50] and Object Pascal, in Bashcite-ref-52[52] it is optional.
Expressiveness
| Language | Statements ratio | Lines ratio |
|---|---|---|
| C | 1 | 1 |
| C++ | 2.5 | 1 |
| Fortran | 2 | 0.8 |
| Java | 2.5 | 1.5 |
| Perl | 6 | 6 |
| Smalltalk | 6 | 6.25 |
| Python | 6 | 6.5 |
The literature on programming languages contains an abundance of informal claims about their relative expressive power, but there is no framework for formalizing such statements nor for deriving interesting consequences.cite-ref-55[55] This table provides two measures of expressiveness from two different sources. An additional measure of expressiveness, in GZip bytes, can be found on the Computer Language Benchmarks Game.cite-ref-56[56]
Benchmarks
Benchmarks are designed to mimic a particular type of workload on a component or system. The computer programs used for compiling some of the benchmark data in this section may not have been fully optimized, and the relevance of the data is disputed. The most accurate benchmarks are those that are customized to your particular situation. Other people's benchmark data may have some value to others, but proper interpretation brings many challenges. The Computer Language Benchmarks Game site warns against over-generalizing from benchmark data, but contains a large number of micro-benchmarks of reader-contributed code snippets, with an interface that generates various charts and tables comparing specific programming languages and types of tests.cite-ref-59[59]
Timeline of specific language comparisons
β’ 1974 β Comparative Notes on Algol 68 and PL/Icite-ref-60[60] β S. H. Valentine β November 1974
β’ 1977 β A comparison of PASCAL and ALGOL 68cite-ref-61[61] β Andrew S. Tanenbaum β June 1977.
β’ 2009 β On Go β oh, go on β How well will Google's Go stand up against Brand X programming language? β David Given β November 2009
See also
References
cite-note-11. β As of May 2006 Diarmuid Pigott's Encyclopedia of Computer Languages Archived 2011-02-20 at the Wayback Machine hosted at Murdoch University, Australia lists 8512 computer languages.
cite-note-21. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions
cite-note-32. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms
cite-note-43. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Generic Units
cite-note-54. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization
cite-note-65. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems
cite-note-76. "Vak.ru" (PDF). Archived from the original (PDF) on 2017-03-30. Retrieved 2008-08-09.
cite-note-87. ISO 1538:1984
cite-note-98. "Vak.ru" (PDF). Archived from the original (PDF) on 2017-03-24. Retrieved 2008-08-09.
cite-note-109. IEEE 694-1985
cite-note-1110. Objects - Definition & Usage
cite-note-1211. "Ballerina Language Specification" (PDF). WSO2. 2018-05-01. Archived from the original (PDF) on 2018-05-04. Retrieved 2018-05-03.
cite-note-posix-1003-1312. POSIX.2, Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.)
cite-note-1413. JSR 274
cite-note-1514. bell-labs.com
cite-note-1615. ANSI C89, ISO/IEC 9899:1990, 1999, 2011, 2018
cite-note-1716. ISO/IEC 14882:1998, 2003, 2011, 2014, 2017, 2020
cite-note-1817. Codeproject.com: Functional Programming in C# 3.0 using Lambda Expression
cite-note-1918. ECMA-334; ISO/IEC 23270:2006
cite-note-2019. Softvelocity.com
cite-note-2120. "Crystal". GitHub. 2 November 2021.
cite-note-2221. "Crystal Generics". crystal-lang.org. 13 April 2024.
cite-note-2322. "Concurrency - Crystal". crystal-lang.org. Retrieved 2024-04-02.
cite-note-2423. Basic Eiffel language mechanisms
cite-note-2524. Closure (computer programming)
cite-note-2625. ECMA-367; ISO/IEC 25436:2006
cite-note-2726. The Go Programming Language (FAQ)
cite-note-2827. "Codewalk: First-Class Functions in Go". Go supports first class functions, higher-order functions, user-defined function types, function literals, closures, and multiple return values. This rich feature set supports a functional programming style in a strongly typed language.
cite-note-2928. JSR 241
cite-note-3029. "The Haskell 2010 Language Report". Retrieved 2011-12-07. Most Haskell implementations extend the Haskell 2010 standard.
cite-note-3130. "Object-Oriented programming in julia". in Julia, Oriented programming is not the primary focus, instead it emphasizes multiple dispatches, a more general concept. Despite this, OOP can still be achieved in Julia through the use of composite types and methods.
cite-note-3231. "Julia Object Oriented Programming". Julia does only partially support object oriented programming (OOP)
cite-note-3332. "Julia 1.11 Documentation".
cite-note-3433. "M8 is out!". 2 July 2014. As a first peek into the future reflective capabilities of Kotlin, you can now access properties as first-class objects in Kotlin
cite-note-3534. Halcyon (Inworldz) and Open Sims propose compatible implementations with additional functions.
cite-note-3635. Lua does not have explicit "object" type (more general type of "table" is used for object definition), but does have explicit syntax for object method calling
cite-note-3736. Version releases are accompanied with a definitive Lua Reference Manual showing full syntax and semantics; a reference implementation, and a test suite. These are used to generate other Lua VM implementations and compilers such as Kahlua and LLVM-Lua.
cite-note-3837. ISO/IEC 10514-1:1996
cite-note-3938. ISO 7185
cite-note-4039. PHP Manual, Chapter 19. Classes and Objects (PHP 5),
cite-note-4140. PHP Manual, Chapter 17. Functions
cite-note-4241. "PostScript Language Reference Manual" (PDF). Archived from the original (PDF) on 2017-02-18. Retrieved 2017-02-18.
cite-note-4342. Is Rust an Object-Oriented Programming Language?
cite-note-4443. citerefklabniknicholsKlabnik, Steve; Nichols, Carol. "Macros". The Rust Programming Language.
cite-note-4544. R3RS, R4RS, R5RS, R6RS, R7RS Small Edition
cite-note-4645. R0RS, R1RS, R2RS
cite-note-4746. SMLNJ.org
cite-note-4848. β "STD.stdio - D Programming Language".
cite-note-4949. β Scala runs on the Java Virtual Machine from which it inherits the runtime exception handling.
cite-note-vs-5050. β gcc can warn on unchecked errno. Newer versions of Visual Studio usually throw exceptions on failed I/O when using stdio.
cite-note-5151. β Considerable error checking can be enabled optionally, but by default Perl is not failsafe.
cite-note-5347. Data from citerefmcconnell2009McConnell, Steve (30 November 2009). Code Complete. Microsoft Press. p. 100. ISBN 9780735636972. The Statements ratio column "shows typical ratios of source statements in several high-level languages to the equivalent code in C. A higher ratio means that each line of code in the language listed accomplishes more than does each line of code in C.
cite-note-5448. The ratio of line count tests won by each language to the number won by C when using the Compare to feature at citerefmcloone2012McLoone, Jon (November 14, 2012). "Code Length Measured in 14 Languages". Archived from the original on 2012-11-19. C gcc was used for C, C++ g++ was used for C++, FORTRAN G95 was used for FORTRAN, Java JDK Server was used for Java, and Smalltalk GST was used for Smalltalk.
cite-note-5656. β "How programs are measured". Computer Language Benchmarks Game. Retrieved 2018-05-29.
cite-note-5850. "Mandelbrot". Computer Language Benchmarks Game. Retrieved 2021-07-09.
cite-note-5959. β "The Ultimate Benchmark". The Computer Language Benchmarks Game. Retrieved 2018-05-29.
cite-note-6161. β "Vrije Universiteit Amsterdam" (PDF).
Further reading
β’ citerefcezzar1995Cezzar, Ruknet (1995). A Guide to Programming Languages: Overview and Comparison. Artech House. ISBN 978-0-89006-812-0.